Imports System.Data.SqlClient
Imports System.ComponentModel
Public Class cls_soldadura_

    Implements ICloneable

#Region "Variables ..."
    Private int_idsoldadura As Integer = 0
    Private int_tipo As enu_tipo = 0
    Private int_idobra As Integer = 0
    Private int_idlinea As Integer = 0
    Private int_idisometrico As Integer = 0
    Private str_codigo As String = ""
    Private dbl_diametro As Double = 0
    Private int_iddiametrounidad As Integer = 0
    Private str_schedule As String = ""
    Private int_idsoldaduratipo As Integer = 0
    Private int_fabricadoen As enu_fabricadoen = 0
    Private int_tiponuevo As enu_tiponuevo = 0
    Private int_idregistro As Integer = 0
    Private bol_refuerzo As Boolean = False
    Private bol_soporte As Boolean = False
    Private str_spool As String = False
    Private dec_alcance As Decimal = 0
    Private dec_diametro2 As Decimal = 0
    Private dec_espesor As Decimal = 0
    Private int_numeracion1 As Integer = 0
    Private int_numeracion2 As Integer = 0
    Private int_numeracion3 As Integer = 0
    Private int_numeracion4 As Integer = 0
    Private int_numeracion5 As Integer = 0

    Private obj_soldaduraensayo_ As cls_soldaduraensayo_ = Nothing

    Private obj_registro As cls_registro_ = Nothing
    Private obj_linea As cls_linea_ = Nothing
    Private obj_isometrico As cls_isometrico_ = Nothing
    Private obj_soldaduratipo As cls_soldaduratipo_ = Nothing

    Private col_Items As Collections.Generic.List(Of cls_soldadura_) = Nothing

    Public Enum enu_tipo
        <Description("Equipos")> equipo = 0
        <Description("Estructuras")> estructura = 1
        <Description("Piping")> piping = 2
        <Description("Accesorios")> accesorio = 3
        <Description("Probetas")> probeta = 4
    End Enum
    Public Enum enu_tiponuevo
        <Description("Nueva")> nueva = 0
        <Description("Nueva por corte")> NC = 1
        <Description("Nueva por cambio en Ing.")> NI = 2
    End Enum

    Public Enum enu_fabricadoen
        <Description("Taller")> taller = 0
        <Description("Campo")> campo = 1
    End Enum

    Public Overrides Function ToString() As String
        Return codigo
    End Function
#End Region

#Region "Propiedades ..."
    ReadOnly Property This
        Get
            Return Me
        End Get
    End Property
    ReadOnly Property ThisDescripcion As String
        Get
            Return Me.ToString
        End Get
    End Property
    ReadOnly Property pKey
        Get
            Return idsoldadura
        End Get
    End Property
    Property idsoldadura() As Integer
        Get
            idsoldadura = int_idsoldadura
        End Get
        Set(ByVal value As Integer)
            int_idsoldadura = value
        End Set
    End Property
    Property tipo() As enu_tipo
        Get
            tipo = int_tipo
        End Get
        Set(ByVal value As enu_tipo)
            int_tipo = value
        End Set
    End Property
    Property idobra() As Integer
        Get
            idobra = int_idobra
        End Get
        Set(ByVal value As Integer)
            int_idobra = value
        End Set
    End Property
    Property idlinea() As Integer
        Get
            idlinea = int_idlinea
        End Get
        Set(ByVal value As Integer)
            int_idlinea = value
        End Set
    End Property
    Property idisometrico() As Integer
        Get
            idisometrico = int_idisometrico
        End Get
        Set(ByVal value As Integer)
            int_idisometrico = value
        End Set
    End Property
    Property codigo() As String
        Get
            codigo = str_codigo
        End Get
        Set(ByVal value As String)
            str_codigo = value
        End Set
    End Property
    Property diametro() As Double
        Get
            diametro = dbl_diametro
        End Get
        Set(ByVal value As Double)
            dbl_diametro = value
        End Set
    End Property
    Property iddiametrounidad() As Integer
        Get
            iddiametrounidad = int_iddiametrounidad
        End Get
        Set(ByVal value As Integer)
            int_iddiametrounidad = value
        End Set
    End Property
    Property schedule() As String
        Get
            schedule = str_schedule
        End Get
        Set(ByVal value As String)
            str_schedule = value
        End Set
    End Property
    Property idsoldaduratipo() As Integer
        Get
            idsoldaduratipo = int_idsoldaduratipo
        End Get
        Set(ByVal value As Integer)
            int_idsoldaduratipo = value
        End Set
    End Property
    Property fabricadoen() As enu_fabricadoen
        Get
            fabricadoen = int_fabricadoen
        End Get
        Set(ByVal value As enu_fabricadoen)
            int_fabricadoen = value
        End Set
    End Property
    Property tiponuevo() As enu_tiponuevo
        Get
            tiponuevo = int_tiponuevo
        End Get
        Set(ByVal value As enu_tiponuevo)
            int_tiponuevo = value
        End Set
    End Property
    Property idregistro() As Integer
        Get
            idregistro = int_idregistro
        End Get
        Set(ByVal value As Integer)
            int_idregistro = value
        End Set
    End Property
    Property refuerzo As Boolean
        Get
            refuerzo = bol_refuerzo
        End Get
        Set(ByVal value As Boolean)
            bol_refuerzo = value
        End Set
    End Property
    Property soporte As Boolean
        Get
            soporte = bol_soporte
        End Get
        Set(ByVal value As Boolean)
            bol_soporte = value
        End Set
    End Property
    Property spool As String
        Get
            spool = str_spool
        End Get
        Set(ByVal value As String)
            str_spool = value
        End Set
    End Property
    Property alcance As Decimal
        Get
            alcance = dec_alcance
        End Get
        Set(ByVal value As Decimal)
            dec_alcance = value
        End Set
    End Property
    Property diametro2 As Decimal
        Get
            diametro2 = dec_diametro2
        End Get
        Set(ByVal value As Decimal)
            dec_diametro2 = value
        End Set
    End Property
    Property espesor As Decimal
        Get
            espesor = dec_espesor
        End Get
        Set(ByVal value As Decimal)
            dec_espesor = value
        End Set
    End Property
    Property numeracion1 As Integer
        Get
            numeracion1 = int_numeracion1
        End Get
        Set(ByVal value As Integer)
            int_numeracion1 = value
        End Set
    End Property
    Property numeracion2 As Integer
        Get
            numeracion2 = int_numeracion2
        End Get
        Set(ByVal value As Integer)
            int_numeracion2 = value
        End Set
    End Property
    Property numeracion3 As Integer
        Get
            numeracion3 = int_numeracion3
        End Get
        Set(ByVal value As Integer)
            int_numeracion3 = value
        End Set
    End Property
    Property numeracion4 As Integer
        Get
            numeracion4 = int_numeracion4
        End Get
        Set(ByVal value As Integer)
            int_numeracion4 = value
        End Set
    End Property
    Property numeracion5 As Integer
        Get
            numeracion5 = int_numeracion5
        End Get
        Set(ByVal value As Integer)
            int_numeracion5 = value
        End Set
    End Property
    Property Items() As Collections.Generic.List(Of cls_soldadura_)
        Get
            Items = col_Items
        End Get
        Set(ByVal value As Collections.Generic.List(Of cls_soldadura_))
            col_Items = value
        End Set
    End Property
    Property linea() As cls_linea_
        Get
            If IsNothing(obj_linea) Then
                obj_linea = New cls_linea_
                If Not obj_linea.Buscar(idlinea) Then
                    obj_linea = Nothing
                End If
            End If
            linea = obj_linea
        End Get
        Set(ByVal value As cls_linea_)
            obj_linea = value
        End Set
    End Property
    Property isometrico() As cls_isometrico_
        Get
            If IsNothing(obj_isometrico) Then
                obj_isometrico = New cls_isometrico_
                If Not obj_isometrico.Buscar(idisometrico) Then
                    obj_isometrico = Nothing
                End If
            End If
            isometrico = obj_isometrico
        End Get
        Set(ByVal value As cls_isometrico_)
            obj_isometrico = value
        End Set
    End Property
    Property soldaduraensayo_() As cls_soldaduraensayo_
        Get
            If IsNothing(obj_soldaduraensayo_) Then
                obj_soldaduraensayo_ = New cls_soldaduraensayo_
                If Not obj_soldaduraensayo_.CargarXidsoldadura(idsoldadura) Then
                    obj_soldaduraensayo_ = Nothing
                End If
            End If
            soldaduraensayo_ = obj_soldaduraensayo_
        End Get
        Set(ByVal value As cls_soldaduraensayo_)
            obj_soldaduraensayo_ = value
        End Set
    End Property
    Property soldaduratipo() As cls_soldaduratipo_
        Get
            If IsNothing(obj_soldaduratipo) Then
                obj_soldaduratipo = New cls_soldaduratipo_
                If Not obj_soldaduratipo.Buscar(idsoldaduratipo) Then
                    obj_soldaduratipo = Nothing
                End If
            End If
            soldaduratipo = obj_soldaduratipo
        End Get
        Set(ByVal value As cls_soldaduratipo_)
            obj_soldaduratipo = value
        End Set
    End Property
    Property registro() As cls_registro_
        Get
            If IsNothing(obj_registro) Then
                obj_registro = New cls_registro_
                If Not obj_registro.Buscar(idregistro) Then
                    obj_registro = Nothing
                End If
            End If
            registro = obj_registro
        End Get
        Set(ByVal value As cls_registro_)
            obj_registro = value
        End Set
    End Property
#End Region

    Private Sub CargarColeccion(ByVal obj_Reader As SqlDataReader)
        col_Items = New Collections.Generic.List(Of cls_soldadura_)
        While obj_Reader.Read()
            Dim Elemento As New cls_soldadura_
            Elemento.int_idsoldadura = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idsoldadura")))

            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tipo"))) = False Then
                Elemento.int_tipo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tipo")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idobra"))) = False Then
                Elemento.int_idobra = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idobra")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idlinea"))) = False Then
                Elemento.int_idlinea = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idlinea")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idisometrico"))) = False Then
                Elemento.int_idisometrico = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idisometrico")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("codigo"))) = False Then
                Elemento.str_codigo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("codigo")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("diametro"))) = False Then
                Elemento.dbl_diametro = (obj_Reader.GetValue(obj_Reader.GetOrdinal("diametro")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("iddiametrounidad"))) = False Then
                Elemento.int_iddiametrounidad = (obj_Reader.GetValue(obj_Reader.GetOrdinal("iddiametrounidad")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("schedule"))) = False Then
                Elemento.str_schedule = (obj_Reader.GetValue(obj_Reader.GetOrdinal("schedule")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idsoldaduratipo"))) = False Then
                Elemento.int_idsoldaduratipo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idsoldaduratipo")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("fabricadoen"))) = False Then
                Elemento.int_fabricadoen = (obj_Reader.GetValue(obj_Reader.GetOrdinal("fabricadoen")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tiponuevo"))) = False Then
                Elemento.int_tiponuevo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tiponuevo")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idregistro"))) = False Then
                Elemento.int_idregistro = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idregistro")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("refuerzo"))) = False Then
                Elemento.refuerzo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("refuerzo")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("soporte"))) = False Then
                Elemento.soporte = (obj_Reader.GetValue(obj_Reader.GetOrdinal("soporte")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("spool"))) = False Then
                Elemento.spool = (obj_Reader.GetValue(obj_Reader.GetOrdinal("spool")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("alcance"))) = False Then
                Elemento.alcance = (obj_Reader.GetValue(obj_Reader.GetOrdinal("alcance")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("diametro2"))) = False Then
                Elemento.dec_diametro2 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("diametro2")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("espesor"))) = False Then
                Elemento.dec_espesor = (obj_Reader.GetValue(obj_Reader.GetOrdinal("espesor")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion1"))) = False Then
                Elemento.int_numeracion1 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion1")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion2"))) = False Then
                Elemento.int_numeracion2 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion2")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion3"))) = False Then
                Elemento.int_numeracion3 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion3")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion4"))) = False Then
                Elemento.int_numeracion4 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion4")))
            End If
            If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion5"))) = False Then
                Elemento.int_numeracion5 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion5")))
            End If


            col_Items.Add(Elemento)
        End While
    End Sub

    Private Sub CargarVariables(ByVal obj_Reader As SqlDataReader)
        obj_Reader.Read()
        int_idsoldadura = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idsoldadura")))

        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tipo"))) = False Then
            int_tipo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tipo")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idobra"))) = False Then
            int_idobra = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idobra")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idlinea"))) = False Then
            int_idlinea = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idlinea")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idisometrico"))) = False Then
            int_idisometrico = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idisometrico")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("codigo"))) = False Then
            str_codigo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("codigo")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("diametro"))) = False Then
            dbl_diametro = (obj_Reader.GetValue(obj_Reader.GetOrdinal("diametro")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("iddiametrounidad"))) = False Then
            int_iddiametrounidad = (obj_Reader.GetValue(obj_Reader.GetOrdinal("iddiametrounidad")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("schedule"))) = False Then
            str_schedule = (obj_Reader.GetValue(obj_Reader.GetOrdinal("schedule")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idsoldaduratipo"))) = False Then
            int_idsoldaduratipo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idsoldaduratipo")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("fabricadoen"))) = False Then
            int_fabricadoen = (obj_Reader.GetValue(obj_Reader.GetOrdinal("fabricadoen")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("tiponuevo"))) = False Then
            int_tiponuevo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("tiponuevo")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("idregistro"))) = False Then
            int_idregistro = (obj_Reader.GetValue(obj_Reader.GetOrdinal("idregistro")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("refuerzo"))) = False Then
            refuerzo = (obj_Reader.GetValue(obj_Reader.GetOrdinal("refuerzo")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("soporte"))) = False Then
            soporte = (obj_Reader.GetValue(obj_Reader.GetOrdinal("soporte")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("spool"))) = False Then
            spool = (obj_Reader.GetValue(obj_Reader.GetOrdinal("spool")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("alcance"))) = False Then
            alcance = (obj_Reader.GetValue(obj_Reader.GetOrdinal("alcance")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("diametro2"))) = False Then
            diametro2 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("diametro2")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("espesor"))) = False Then
            espesor = (obj_Reader.GetValue(obj_Reader.GetOrdinal("espesor")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion1"))) = False Then
            int_numeracion1 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion1")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion2"))) = False Then
            int_numeracion2 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion2")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion3"))) = False Then
            int_numeracion3 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion3")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion4"))) = False Then
            int_numeracion4 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion4")))
        End If
        If IsDBNull(obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion5"))) = False Then
            int_numeracion5 = (obj_Reader.GetValue(obj_Reader.GetOrdinal("numeracion5")))
        End If
    End Sub

    Public Sub Nuevo(Optional ByVal ObtenerID As Boolean = False)
        Dim obj_Conexion As New cls_Conexion
        Try
            'Creacion de registro----------------------------------------------------
            If IsNothing(obj_registro) Then
                registro = New cls_registro_
                registro.fechacreado = Now
                registro.idusuariocreado = UsuarioLOG.idusuario
                registro.fechamodificado = Now
                registro.idusuariomodificado = UsuarioLOG.idusuario
                registro.idregistroestado = 1
                registro.idusuarioregistroestado = UsuarioLOG.idusuario
                registro.Nuevo(True)
                idregistro = obj_registro.idregistro
            End If
            '------------------------------------------------------------------------
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__Nuevo"
                .Parameters.Add("@tipo", SqlDbType.int).Value = int_tipo
                .Parameters.Add("@idobra", SqlDbType.int).Value = int_idobra
                .Parameters.Add("@idlinea", SqlDbType.int).Value = int_idlinea
                .Parameters.Add("@idisometrico", SqlDbType.int).Value = int_idisometrico
                .Parameters.Add("@codigo", SqlDbType.nvarchar).Value = str_codigo
                .Parameters.Add("@diametro", SqlDbType.decimal).Value = dbl_diametro
                .Parameters.Add("@iddiametrounidad", SqlDbType.int).Value = int_iddiametrounidad
                .Parameters.Add("@schedule", SqlDbType.nvarchar).Value = str_schedule
                .Parameters.Add("@idsoldaduratipo", SqlDbType.int).Value = int_idsoldaduratipo
                .Parameters.Add("@fabricadoen", SqlDbType.int).Value = int_fabricadoen
                .Parameters.Add("@tiponuevo", SqlDbType.int).Value = int_tiponuevo
                .Parameters.Add("@idregistro", SqlDbType.Int).Value = int_idregistro
                .Parameters.Add("@refuerzo", SqlDbType.Bit).Value = bol_refuerzo
                .Parameters.Add("@soporte", SqlDbType.Bit).Value = bol_soporte
                .Parameters.Add("@spool", SqlDbType.NVarChar).Value = str_spool
                .Parameters.Add("@alcance", SqlDbType.Decimal).Value = dec_alcance
                .Parameters.Add("@diametro2", SqlDbType.Decimal).Value = dec_diametro2
                .Parameters.Add("@espesor", SqlDbType.Decimal).Value = dec_espesor
                .Parameters.Add("@numeracion1", SqlDbType.Int).Value = int_numeracion1
                .Parameters.Add("@numeracion2", SqlDbType.Int).Value = int_numeracion2
                .Parameters.Add("@numeracion3", SqlDbType.Int).Value = int_numeracion3
                .Parameters.Add("@numeracion4", SqlDbType.Int).Value = int_numeracion4
                .Parameters.Add("@numeracion5", SqlDbType.Int).Value = int_numeracion5

                .ExecuteNonQuery()
            End With

            CargarUltimo()

            'Creacion de soldaduraensayo_--------------------------------------------------
            If Not IsNothing(soldaduraensayo_) Then
                If Not IsNothing(soldaduraensayo_.Items) Then
                    For Each soldaduraensayo As cls_soldaduraensayo_ In soldaduraensayo_.Items
                        soldaduraensayo.idsoldadura = idsoldadura
                        soldaduraensayo.Nuevo(True)
                    Next
                End If
            End If
            '-------------------------------------------------------------------------

        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Crear el registro de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Sub

    Public Sub Modificar()
        Dim obj_Conexion As New cls_Conexion
        Try
            'Modificacion de registro------------------------------------------------
            registro.fechamodificado = Now : registro.idusuariomodificado = UsuarioLOG.idusuario
            registro.Modificar()
            '------------------------------------------------------------------------
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__Modificar"
                .Parameters.Add("@idsoldadura", SqlDbType.int).Value = int_idsoldadura
                .Parameters.Add("@tipo", SqlDbType.int).Value = int_tipo
                .Parameters.Add("@idobra", SqlDbType.int).Value = int_idobra
                .Parameters.Add("@idlinea", SqlDbType.int).Value = int_idlinea
                .Parameters.Add("@idisometrico", SqlDbType.int).Value = int_idisometrico
                .Parameters.Add("@codigo", SqlDbType.nvarchar).Value = str_codigo
                .Parameters.Add("@diametro", SqlDbType.decimal).Value = dbl_diametro
                .Parameters.Add("@iddiametrounidad", SqlDbType.int).Value = int_iddiametrounidad
                .Parameters.Add("@schedule", SqlDbType.nvarchar).Value = str_schedule
                .Parameters.Add("@idsoldaduratipo", SqlDbType.int).Value = int_idsoldaduratipo
                .Parameters.Add("@fabricadoen", SqlDbType.int).Value = int_fabricadoen
                .Parameters.Add("@tiponuevo", SqlDbType.int).Value = int_tiponuevo
                .Parameters.Add("@idregistro", SqlDbType.Int).Value = int_idregistro
                .Parameters.Add("@refuerzo", SqlDbType.Bit).Value = bol_refuerzo
                .Parameters.Add("@soporte", SqlDbType.Bit).Value = bol_soporte
                .Parameters.Add("@spool", SqlDbType.NVarChar).Value = str_spool
                .Parameters.Add("@alcance", SqlDbType.Decimal).Value = dec_alcance
                .Parameters.Add("@diametro2", SqlDbType.Decimal).Value = dec_diametro2
                .Parameters.Add("@espesor", SqlDbType.Decimal).Value = dec_espesor
                .Parameters.Add("@numeracion1", SqlDbType.Int).Value = int_numeracion1
                .Parameters.Add("@numeracion2", SqlDbType.Int).Value = int_numeracion2
                .Parameters.Add("@numeracion3", SqlDbType.Int).Value = int_numeracion3
                .Parameters.Add("@numeracion4", SqlDbType.Int).Value = int_numeracion4
                .Parameters.Add("@numeracion5", SqlDbType.Int).Value = int_numeracion5
                .ExecuteNonQuery()
            End With

            'Creacion/modificacion de produccionresultado-------------------------------------
            If Not IsNothing(soldaduraensayo_) Then
                If Not IsNothing(soldaduraensayo_.Items) Then
                    For Each soldaduraensayo As cls_soldaduraensayo_ In soldaduraensayo_.Items
                        If soldaduraensayo.idsoldaduraensayo = 0 Then
                            soldaduraensayo.idsoldadura = idsoldadura
                            soldaduraensayo.Nuevo(True)
                        Else
                            soldaduraensayo.Modificar()
                        End If
                    Next
                End If
            End If
            '-------------------------------------------------------------------------

        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Modificar el registro de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Sub

    Public Sub Eliminar(ByVal idsoldadura As Integer)
        Dim obj_Conexion As New cls_Conexion
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__Eliminar"
                .Parameters.Add("@idsoldadura", SqlDbType.int).Value = idsoldadura
                .ExecuteNonQuery()
            End With
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Eliminar el registro de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
        End Try
    End Sub

    Public Function Buscar(ByVal idsoldadura As Integer) As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            Buscar = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__Buscar"
                .Parameters.Add("@idsoldadura", SqlDbType.int).Value = idsoldadura
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarVariables(obj_Reader)
                Buscar = True
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al Buscar el registro de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Sub CargarUltimo()
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__CargarUltimo"
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarVariables(obj_Reader)
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al CargarUltimo registro de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Sub

    Public Function CargarTodos() As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            CargarTodos = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__CargarTodos"
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarColeccion(obj_Reader)
                CargarTodos = True
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al CargarTodos los registros de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Function CargarXidisometrico(ByVal int_idisometrico As Integer) As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            CargarXidisometrico = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__CargarXidisometrico"
                .Parameters.Add("@idisometrico", SqlDbType.Int).Value = int_idisometrico
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarColeccion(obj_Reader)
                CargarXidisometrico = True
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al CargarXidisometrico los registros de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Function numeracion1Xidisometrico(ByVal int_idisometrico As Integer) As Integer
        numeracion1Xidisometrico = 0
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__numeracion1Xidisometrico"
                .Parameters.Add("@idisometrico", SqlDbType.Int).Value = int_idisometrico
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                obj_Reader.Read()
                Return (obj_Reader.GetValue(obj_Reader.GetOrdinal("valor")))
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al numeracion1Xidisometrico los registros de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Function numeracion2XidisometricoXnumeracion1(ByVal int_idisometrico As Integer, ByVal int_numeracion1 As Integer) As Integer
        numeracion2XidisometricoXnumeracion1 = 0
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__numeracion2XidisometricoXnumeracion1"
                .Parameters.Add("@idisometrico", SqlDbType.Int).Value = int_idisometrico
                .Parameters.Add("@numeracion1", SqlDbType.Int).Value = int_numeracion1
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                obj_Reader.Read()
                Return (obj_Reader.GetValue(obj_Reader.GetOrdinal("valor")))
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al numeracion2XidisometricoXnumeracion1 los registros de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Function numeracion3XidisometricoXnumeracion1(ByVal int_idisometrico As Integer, ByVal int_numeracion1 As Integer) As Integer
        numeracion3XidisometricoXnumeracion1 = 0
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__numeracion3XidisometricoXnumeracion1"
                .Parameters.Add("@idisometrico", SqlDbType.Int).Value = int_idisometrico
                .Parameters.Add("@numeracion1", SqlDbType.Int).Value = int_numeracion1
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                obj_Reader.Read()
                Return (obj_Reader.GetValue(obj_Reader.GetOrdinal("valor")))
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al numeracion3XidisometricoXnumeracion1 los registros de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Function numeracion4XidisometricoXnumeracion1(ByVal int_idisometrico As Integer, ByVal int_numeracion1 As Integer) As Integer
        numeracion4XidisometricoXnumeracion1 = 0
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__numeracion4XidisometricoXnumeracion1"
                .Parameters.Add("@idisometrico", SqlDbType.Int).Value = int_idisometrico
                .Parameters.Add("@numeracion1", SqlDbType.Int).Value = int_numeracion1
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                obj_Reader.Read()
                Return (obj_Reader.GetValue(obj_Reader.GetOrdinal("valor")))
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al numeracion4XidisometricoXnumeracion1 los registros de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function

    Public Function CargarXidobraXtipo(ByVal prm_idobra As Integer, ByVal prm_tipo As enu_tipo) As Boolean
        Dim obj_Conexion As New cls_Conexion
        Dim obj_Reader As SqlDataReader
        Try
            CargarXidobraXtipo = False
            obj_Conexion.Conectar()
            With obj_Conexion.obj_SqlCommand
                .CommandType = CommandType.StoredProcedure
                .Connection = obj_Conexion.obj_SqlConnection
                .CommandText = "soldadura__CargarXidobraXtipo"
                .Parameters.Add("@idobra", SqlDbType.Int).Value = prm_idobra
                .Parameters.Add("@tipo", SqlDbType.Int).Value = prm_tipo
            End With
            obj_Reader = obj_Conexion.obj_SqlCommand.ExecuteReader
            If obj_Reader.HasRows Then
                CargarColeccion(obj_Reader)
                CargarXidobraXtipo = True
            End If
        Catch ex As SqlClient.SqlException
            MessageBox.Show("Error al CargarXidobraXtipo los registros de soldadura_." & Chr(13) & _
            "Por favor informe del siguiente detalle técnico:" & Chr(13) & _
            "Nro de error: " & ex.ErrorCode & "." & Chr(13) & _
            "Descripción: " & ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            obj_Conexion.Desconectar()
            obj_Conexion = Nothing
            obj_Reader = Nothing
        End Try
    End Function
    Public Function Clone() As Object Implements System.ICloneable.Clone
        Dim obj_soldadura_Clon As New cls_soldadura_
        obj_soldadura_Clon.int_idsoldadura = Me.int_idsoldadura
        obj_soldadura_Clon.int_tipo = Me.int_tipo
        obj_soldadura_Clon.int_idobra = Me.int_idobra
        obj_soldadura_Clon.int_idlinea = Me.int_idlinea
        obj_soldadura_Clon.int_idisometrico = Me.int_idisometrico
        obj_soldadura_Clon.str_codigo = Me.str_codigo
        obj_soldadura_Clon.dbl_diametro = Me.dbl_diametro
        obj_soldadura_Clon.int_iddiametrounidad = Me.int_iddiametrounidad
        obj_soldadura_Clon.str_schedule = Me.str_schedule
        obj_soldadura_Clon.int_idsoldaduratipo = Me.int_idsoldaduratipo
        obj_soldadura_Clon.int_fabricadoen = Me.int_fabricadoen
        obj_soldadura_Clon.int_tiponuevo = Me.int_tiponuevo
        obj_soldadura_Clon.int_idregistro = Me.int_idregistro
        obj_soldadura_Clon.col_Items = Me.col_Items
        Return obj_soldadura_Clon
    End Function

End Class
